home *** CD-ROM | disk | FTP | other *** search
Wrap
Text File | 1995-08-10 | 11.6 KB | 301 lines | [ TEXT/MPS ]
(* File: DatabaseAccess.mod Contains: Database Access Manager Interfaces. Version: Technology: System 7.5 Package: Universal Interfaces 2.0 in “MPW Latest” on ETO #17 Copyright: © 1984-1995 by Apple Computer, Inc. All rights reserved. Bugs?: If you find a problem with this file, use the Apple Bug Reporter stack. Include the file and version information (from above) in the problem description and send to: Internet: apple.bugs.applelink.apple.com AppleLink: APPLE.BUGS *) (*$TAGS-*) (*$CALLING PASCAL*) MODULE DatabaseAccess; IMPORT SYSTEM, Types; (* $PUSH*) (* $ALIGN MAC68K*) (* $LibExport+*) CONST typeNone* = LONG("none"); typeDate* = LONG("date"); typeTime* = LONG("time"); typeTimeStamp* = LONG("tims"); typeDecimal* = LONG("deci"); typeMoney* = LONG("mone"); typeVChar* = LONG("vcha"); typeVBin* = LONG("vbin"); typeLChar* = LONG("lcha"); typeLBin* = LONG("lbin"); typeDiscard* = LONG("disc"); (* "dummy" types for DBResultsToText *) typeUnknown* = LONG("unkn"); typeColBreak* = LONG("colb"); typeRowBreak* = LONG("rowb"); (* pass this in to DBGetItem for any data type *) typeAnyType* = 0; (* infinite timeout value for DBGetItem *) (* messages for status functions for DBStartQuery *) kDBUpdateWind* = 0; kDBAboutToInit* = 1; kDBInitComplete* = 2; kDBSendComplete* = 3; kDBExecComplete* = 4; kDBStartQueryComplete* = 5; (* messages for status functions for DBGetQueryResults *) kDBGetItemComplete* = 6; kDBGetQueryResultsComplete* = 7; kDBWaitForever* = -1; (* flags for DBGetItem *) kDBLastColFlag* = $0001; kDBNullFlag* = $0004; TYPE DBType* = Types.OSType; DBAsyncParmBlkPtr* = POINTER TO DBAsyncParamBlockRec; (* DBCompletionProcPtr uses register based parameters on the 68k and cannot be written in or called from a high-level language without the help of mixed mode or assembly glue. In*: => pb A1.L *) DBCompletionProcPtr* = Types.Register68kProcPtr; (* register PROCEDURE DBCompletion*(pb: DBAsyncParmBlkPtr); *) DBCompletionUPP* = Types.UniversalProcPtr; DBAsyncParamBlockRec* = RECORD completionProc*: DBCompletionUPP; (* pointer to completion routine *) result*: Types.OSErr; (* result of call *) userRef*: LONGINT; (* for application's use *) ddevRef*: LONGINT; (* for ddev's use *) reserved*: LONGINT; (* for internal use *) END; CONST uppDBCompletionProcInfo* = $0000B802; (* Register PROCEDURE (4 bytes in A1); *) PROCEDURE CallDBCompletionProc*(pb: DBAsyncParmBlkPtr; userRoutine: DBCompletionUPP); (*$IF NOT GENERATINGCFM*) INLINE PASCAL ; (*••*) (*To be implemented*: Glue to move parameters into registers.*) (*$END*) PROCEDURE NewDBCompletionProc*(userRoutine: DBCompletionProcPtr): DBCompletionUPP; (*$IF NOT GENERATINGCFM *) INLINE PASCAL $2E9F; (*$END*) TYPE ResListElem* = RECORD theType*: Types.ResType; (* resource type *) id*: INTEGER; (* resource id *) END; ResListPtr* = POINTER TO ResListElem; ResListHandle* = HANDLE TO ResListElem (*ΔΔ POINTER TO ResListPtr*); (* structure for query list in QueryRecord *) QueryArray* = ARRAY 256 (*ΔΔ[0..255]ΔΔ*) OF Types.Handle; QueryListPtr* = POINTER TO QueryArray; QueryListHandle* = HANDLE TO QueryArray(*ΔΔ POINTER TO QueryListPtr*); QueryRecord* = RECORD version*: INTEGER; (* version *) id*: INTEGER; (* id of LONG("qrsc") this came from *) queryProc*: Types.Handle; (* handle to query def proc *) ddevName*: Types.Str63; (* ddev name *) host*: Types.Str255; (* host name *) user*: Types.Str255; (* user name *) password*: Types.Str255; (* password *) connStr*: Types.Str255; (* connection string *) currQuery*: INTEGER; (* index of current query *) numQueries*: INTEGER; (* number of queries in list *) queryList*: QueryListHandle; (* handle to array of handles to text *) numRes*: INTEGER; (* number of resources in list *) resList*: ResListHandle; (* handle to array of resource list elements *) dataHandle*: Types.Handle; (* for use by query def proc *) refCon*: LONGINT; (* for use by application *) END; QueryPtr* = POINTER TO QueryRecord; QueryHandle* = HANDLE TO QueryRecord (*ΔΔ POINTER TO QueryPtr*); (* structure of column types array in ResultsRecord *) ColTypesArray* = ARRAY 256 (*ΔΔ[0..255]ΔΔ*) OF DBType; ColTypesPtr* = POINTER TO ColTypesArray; ColTypesHandle* = HANDLE TO ColTypesArray (*ΔΔ POINTER TO ColTypesPtr*); DBColInfoRecord* = RECORD len*: INTEGER; places*: INTEGER; flags*: INTEGER; END; ColInfoArray* = ARRAY 256 (*ΔΔ[0..255]ΔΔ*) OF DBColInfoRecord; ColInfoPtr* = POINTER TO ColInfoArray; ColInfoHandle* = HANDLE TO ColInfoArray (*ΔΔ POINTER TO ColInfoPtr*); ResultsRecord* = RECORD numRows*: INTEGER; (* number of rows in result *) numCols*: INTEGER; (* number of columns per row *) colTypes*: ColTypesHandle; (* data type array *) colData*: Types.Handle; (* actual results *) colInfo*: ColInfoHandle; (* DBColInfoRecord array *) END; DBQueryDefProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (VAR sessID: LONGINT; query: QueryHandle): Types.OSErr; DBStatusProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (message: INTEGER; result: Types.OSErr; dataLen: INTEGER; dataPlaces: INTEGER; dataFlags: INTEGER; dataType: DBType; dataPtr: Types.Ptr): BOOLEAN; DBResultHandlerProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (dataType: DBType; theLen: INTEGER; thePlaces: INTEGER; theFlags: INTEGER; theData: Types.Ptr; theText: Types.Handle): Types.OSErr; DBQueryDefUPP* = Types.UniversalProcPtr; DBStatusUPP* = Types.UniversalProcPtr; DBResultHandlerUPP* = Types.UniversalProcPtr; CONST uppDBQueryDefProcInfo* = $000003E0; (* PROCEDURE (4 byte param, 4 byte param): 2 byte result; *) uppDBStatusProcInfo* = $000FAA90; (* PROCEDURE (2 byte param, 2 byte param, 2 byte param, 2 byte param, 2 byte param, 4 byte param, 4 byte param): 1 byte result; *) uppDBResultHandlerProcInfo* = $0003EAE0; (* PROCEDURE (4 byte param, 2 byte param, 2 byte param, 2 byte param, 4 byte param, 4 byte param): 2 byte result; *) PROCEDURE NewDBQueryDefProc*(userRoutine: DBQueryDefProcPtr): DBQueryDefUPP; (*$IF NOT GENERATINGCFM *) INLINE PASCAL $2E9F; (*$END*) PROCEDURE NewDBStatusProc*(userRoutine: DBStatusProcPtr): DBStatusUPP; (*$IF NOT GENERATINGCFM *) INLINE PASCAL $2E9F; (*$END*) PROCEDURE NewDBResultHandlerProc*(userRoutine: DBResultHandlerProcPtr): DBResultHandlerUPP; (*$IF NOT GENERATINGCFM *) INLINE PASCAL $2E9F; (*$END*) PROCEDURE CallDBQueryDefProc*(VAR sessID: LONGINT; query: QueryHandle; userRoutine: DBQueryDefUPP): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $205F, $4E90; (*$END*) PROCEDURE CallDBStatusProc*(message: INTEGER; result: Types.OSErr; dataLen: INTEGER; dataPlaces: INTEGER; dataFlags: INTEGER; dataType: DBType; dataPtr: Types.Ptr; userRoutine: DBStatusUPP): BOOLEAN; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $205F, $4E90; (*$END*) PROCEDURE CallDBResultHandlerProc*(dataType: DBType; theLen: INTEGER; thePlaces: INTEGER; theFlags: INTEGER; theData: Types.Ptr; theText: Types.Handle; userRoutine: DBResultHandlerUPP): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $205F, $4E90; (*$END*) PROCEDURE InitDBPack*(): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $3F3C, $0004, $303C, $0100, $A82F; (*$END*) PROCEDURE DBInit*(VAR sessID: LONGINT; ddevName: Types.ConstStr63Param; host: Types.ConstStr255Param; user: Types.ConstStr255Param; passwd: Types.ConstStr255Param; connStr: Types.ConstStr255Param; asyncPB: DBAsyncParmBlkPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $303C, $0E02, $A82F; (*$END*) PROCEDURE DBEnd*(sessID: LONGINT; asyncPB: DBAsyncParmBlkPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $303C, $0403, $A82F; (*$END*) PROCEDURE DBGetConnInfo*(sessID: LONGINT; sessNum: INTEGER; VAR returnedID: LONGINT; VAR version: LONGINT; VAR ddevName: Types.Str63; VAR host: Types.Str255; VAR user: Types.Str255; VAR network: Types.Str255; VAR connStr: Types.Str255; VAR start: LONGINT; VAR state: Types.OSErr; asyncPB: DBAsyncParmBlkPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $303C, $1704, $A82F; (*$END*) PROCEDURE DBGetSessionNum*(sessID: LONGINT; VAR sessNum: INTEGER; asyncPB: DBAsyncParmBlkPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $303C, $0605, $A82F; (*$END*) PROCEDURE DBSend*(sessID: LONGINT; text: Types.Ptr; len: INTEGER; asyncPB: DBAsyncParmBlkPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $303C, $0706, $A82F; (*$END*) PROCEDURE DBSendItem*(sessID: LONGINT; dataType: DBType; len: INTEGER; places: INTEGER; flags: INTEGER; buffer: (*ΔΔUNIVΔΔ*) Types.Ptr; asyncPB: DBAsyncParmBlkPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $303C, $0B07, $A82F; (*$END*) PROCEDURE DBExec*(sessID: LONGINT; asyncPB: DBAsyncParmBlkPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $303C, $0408, $A82F; (*$END*) PROCEDURE DBState*(sessID: LONGINT; asyncPB: DBAsyncParmBlkPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $303C, $0409, $A82F; (*$END*) PROCEDURE DBGetErr*(sessID: LONGINT; VAR err1: LONGINT; VAR err2: LONGINT; VAR item1: Types.Str255; VAR item2: Types.Str255; VAR errorMsg: Types.Str255; asyncPB: DBAsyncParmBlkPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $303C, $0E0A, $A82F; (*$END*) PROCEDURE DBBreak*(sessID: LONGINT; abort: BOOLEAN; asyncPB: DBAsyncParmBlkPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $303C, $050B, $A82F; (*$END*) PROCEDURE DBGetItem*(sessID: LONGINT; timeout: LONGINT; VAR dataType: DBType; VAR len: INTEGER; VAR places: INTEGER; VAR flags: INTEGER; buffer: (*ΔΔUNIVΔΔ*) Types.Ptr; asyncPB: DBAsyncParmBlkPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $303C, $100C, $A82F; (*$END*) PROCEDURE DBUnGetItem*(sessID: LONGINT; asyncPB: DBAsyncParmBlkPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $303C, $040D, $A82F; (*$END*) PROCEDURE DBKill*(asyncPB: DBAsyncParmBlkPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $303C, $020E, $A82F; (*$END*) PROCEDURE DBGetNewQuery*(queryID: INTEGER; VAR query: QueryHandle): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $303C, $030F, $A82F; (*$END*) PROCEDURE DBDisposeQuery*(query: QueryHandle): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $303C, $0210, $A82F; (*$END*) PROCEDURE DBStartQuery*(VAR sessID: LONGINT; query: QueryHandle; statusProc: DBStatusUPP; asyncPB: DBAsyncParmBlkPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $303C, $0811, $A82F; (*$END*) PROCEDURE DBGetQueryResults*(sessID: LONGINT; VAR results: ResultsRecord; timeout: LONGINT; statusProc: DBStatusUPP; asyncPB: DBAsyncParmBlkPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $303C, $0A12, $A82F; (*$END*) PROCEDURE DBResultsToText*(VAR results: ResultsRecord; VAR theText: Types.Handle): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $303C, $0413, $A82F; (*$END*) PROCEDURE DBInstallResultHandler*(dataType: DBType; theHandler: DBResultHandlerUPP; isSysHandler: BOOLEAN): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $303C, $0514, $A82F; (*$END*) PROCEDURE DBRemoveResultHandler*(dataType: DBType): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $303C, $0215, $A82F; (*$END*) PROCEDURE DBGetResultHandler*(dataType: DBType; VAR theHandler: DBResultHandlerUPP; getSysHandler: BOOLEAN): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $303C, $0516, $A82F; (*$END*) (* $ALIGN RESET*) (* $POP*) END DatabaseAccess.